In this document, “low memory device” refers to a device comprising not memory enough for storing both the current and the new versions of the firmware. As a consequence, the firmware cannot fully update itself because it will be erased during the update process.
Three methods are currently known for updating a firmware of such a low memory device. According to a first method, the low memory device is connected to another device, for example a computer. Then, the other device downloads the new version of the firmware and copies the new version in place of the current version in the device memory. However, this method requires the use of an external device.
According to a second method, an external memory is added to the device, for example a SD card. Then, the device connects to a server via a wireless connection so as to download the new version of the firmware and replaces versions. However, this method requires the use of an external memory. Moreover, the device has to be adapted for receiving such an external memory.
A third method requires a special feature rich boot loader able to erase the current version of the firmware, establish a remote connection to an update server, and download the new version in place of the current version. However, such a boot loader is complex because a communication stack has to be embedded in said boot loader. As a consequence, risks for bugs and needs for updates are high. Moreover, said boot loader requires a lot of internal memory.